package com.usdt.system.domain.resp;

import java.math.BigDecimal;
import java.math.RoundingMode;

import com.baomidou.mybatisplus.core.metadata.IPage;

import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Tag(name = "销控图-房间信息VO")
public class RoomSalesChartRespVo {

	@Schema(title = "总房间数")
	private Integer roomNumTotal=0;
	
	@Schema(title = "入住房间数")
	private Integer chechInRoomNumTotal=0;
	
	@Schema(title = "不可租房间数")
	private Integer notRentRoomNumTotal=0;
	
	
	@Schema(title = "总床位数")
	private Integer bedNumTotal=0;
	
	@Schema(title = "入住床位数")
	private Integer chechInBedNumTotal=0;
	
	@Schema(title = "不可租床位数")
	private Integer notRentBedNumTotal=0;
	
	
	@Schema(title = "入住人数")
	private Integer peopleNumTotal=0;
	
	@Schema(title = "占用床位数(包床)")
	private Integer occupyBedNumTotal=0;
	
	
	/*
	（1）房间占用率=已入住房间/（总房间数-不可租房间数）
	（2）床位占用率=已入住床位（人数 + 包床（护理））/（总床位数-不可租床位数）
	（3）入住率=人头数/（总床位数-不可用床位数）
	自理区：单人间按照1个床位计算、非单人间按照2个床位计算；
	护理区：单床位计算
	*/
	
	//房间占用率 = 已入住房间/（总房间数-不可租房间数）
	@Schema(title = "房间占用率")
	private BigDecimal roomchechInRate;
	
	//床位占用率 = 已入住床位/（总床位数-不可租床位数）
	@Schema(title = "床位占用率")
	private BigDecimal bedchechInRate;		
	
	//入住率 = 已入住床位/（ 总床位数 - 不可租床位数）
	@Schema(title = "入住率")
	private BigDecimal chechInRate;
	
	//闲置率
	@Schema(title = "闲置率")
	private BigDecimal chechOutRate;
	
	@Schema(title = "房间信息")
	IPage<RoomSaleChart2RespVo> pageList;

	public BigDecimal getRoomchechInRate() {
		Integer fM = roomNumTotal - notRentRoomNumTotal;
		if(0==fM) {
			return  BigDecimal.ZERO;
		}
		return new BigDecimal(chechInRoomNumTotal).multiply(new BigDecimal(100)).divide(new BigDecimal(fM), 2, RoundingMode.HALF_UP);
	}
	
	public BigDecimal getBedchechInRate() {
		Integer fM = bedNumTotal - notRentBedNumTotal;
		if(0==fM) {
			return  BigDecimal.ZERO;
		}
		
		return new BigDecimal(peopleNumTotal).add(new BigDecimal(occupyBedNumTotal)).multiply(new BigDecimal(100)).divide(new BigDecimal(fM), 2, RoundingMode.HALF_UP);
	}
	
	public BigDecimal getChechInRate() {
		Integer fM = bedNumTotal - notRentBedNumTotal;
		if(0==fM) {
			return  BigDecimal.ZERO;
		}
		return new BigDecimal(peopleNumTotal).multiply(new BigDecimal(100)).divide(new BigDecimal(fM), 2, RoundingMode.HALF_UP);
	}
	
	public BigDecimal getChechOutRate() {
		return new BigDecimal(100).subtract(this.getChechInRate());
	}
	
}
